﻿#include<iostream>
#include<map>
using namespace std;

int main()
{
	map<string, string> dict;
	dict.insert(make_pair("sort", "排序"));

	// key不存在-> 插⼊ {"insert", string()} 
	dict["insert"];

	// key不存在-> 插⼊+修改 
	dict["left"] = "左边";

	// key已经存在-> 修改 
	dict["left"] = "左边、剩余";

	// key存在->查找 
	cout << dict["left"] << endl;
	return 0;
}


//int main()
//{
//	string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜","苹果", "香蕉", "苹果", "香蕉" };  // 使用正确汉字 
//	map<string, int> countMap;
//
//	//普通统计水果数量的方式
//	for (auto& e : arr)
//	{
//		auto pos=countMap.find(e);
//		if (pos != countMap.end())
//		{
//			pos->second++;
//		}
//		else
//		{
//			countMap.insert({ e,1 });
//		}
//	}
//	for (auto& e : countMap)
//	{
//		cout << e.first << "," << e.second<<" ";
//	}
//	cout << endl;
//
//
//	//使用operator[]
//	for (auto& e : arr)
//	{
//		countMap[e]++;
//	}
//	//若e存在则插入失败，operator[]返回value，再让其+1
//	//若e不存在则插入成功{e，0}，operator[]返回value，再让其+1 》{e,1}
//	for (auto& e : countMap)
//	{
//		cout << e.first << "," << e.second << " ";
//	}
//	cout << endl;
//	
//}


//增删查改
//int main()
//{
//	map<string, string> m;
//
//	//插入有名pair（方式一）
//	pair<string, string> s("first", "第一个");
//	m.insert(s);
//
//	//插入无名piar（方式二）
//	m.insert(pair<string, string>("second", "第二个"));
//
//	//调用make_pair函数
//	m.insert(make_pair("third", "第三个"));
//	//make_pair函数，其功能为，将两个参数构造成一个pair并返回
//
//	//隐式类型转化（c++11）,可以看作将两个元素直接转化为pair
//	m.insert({ "auto", "自动的" });
//
//	// initializer_list构造
//	map<string, string> dict = { {"left", "左边"}, {"right", "右边"},
//{"insert", "插⼊"},{ "string", "字符串" } };
//
//	
//	//map的遍历
//	//pair并没有重载流插入与流提取，故而下面的输出我们只能通过输出成员变量
//	cout << "遍历一：" << endl;
//	for (auto& e : m)
//	{
//		cout << e.first << "," << e.second << " ";
//	}
//	cout << endl;
//
//	cout << "遍历二：" << endl;
//	auto it = m.begin();
//	while (it != m.end())
//	{
//		cout << it->first << "," <<it->second<< " ";
//		it++;
//	}
//	cout << endl;
//
//
//	//map的查找
//	string str;
//	cin >> str;
//	auto pos = m.find(str);
//	if (pos != m.end())
//	{
//		cout << "找到了：" << pos->first << "," << pos->second << endl;
//	}
//	else
//	{
//		cout << "不存在！"<<endl;
//	}
//
//
//	//map的删除
//	cout << "删除一：" << endl;
//	cin >> str;
//	m.erase(str);
//	for (auto& e : m)
//	{
//		cout << e.first << "," << e.second << " ";
//	}
//	cout << endl;
//
//	cout << "删除二：" << endl;
//	cin >> str;
//	auto pos0 = m.find(str);
//	m.erase(pos0);
//	for (auto& e : m)
//	{
//		cout << e.first << "," << e.second << " ";
//	}
//	cout << endl;
//
//	cout << "删除三：" << endl;
//	//iterator  erase (const_iterator first, const_iterator last);
//	//删除一段区间，给出左边迭代器和右边迭代器，函数将会删除这段区间，
//	//一般搭配 lower_bound  upper_bound 使用
//}
